home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group95c.txt / 000026_icon-group-sender _Fri Sep 29 13:35:14 1995.msg < prev    next >
Internet Message Format  |  1996-01-03  |  2KB

  1. Received: by cheltenham.cs.arizona.edu; Fri, 29 Sep 1995 16:22:10 MST
  2. Date: Fri, 29 Sep 1995 13:35:14 -0700
  3. From: Gregg Townsend <gmt>
  4. Message-Id: <9509292035.AA16487@hawk.CS.Arizona.EDU>
  5. To: icon-group@cs.arizona.edu, qbchsod@ebcw131.ericsson.se
  6. Subject: Re:  Q: icont error message
  7. Errors-To: icon-group-errors@cs.arizona.edu
  8.  
  9.    From: qbchsod@ebcw131.ericsson.se (Soderstrom Hakan)
  10.     
  11.    I took a *working* program from an Icon 8.9 environment and tried to run
  12.    it in a 9.0 environment. Now it wouldn't compile; icont complains:
  13.     
  14.    pltodb.icn: Line 85 # :"d_bname": no record having this field is ever created
  15.             ...
  16.  
  17. Short answer:
  18.  
  19. If this was a working program, it probably is using string invocation
  20. at some point and requires an "invocable all" declaration to run under
  21. Icon version 9.0.
  22.  
  23. If you see this error message in any other situation, just ignore it.
  24. It's so confusing that we're removing it from Icon 9.1.
  25.  
  26.  
  27. Long answer:
  28.  
  29. Version 9 of Icon removes unreferenced procedures at the linking phase.
  30. That makes it feasible to construct and use libraries by linking files
  31. of many procedures:  there's no penalty, because the unreferenced
  32. procedures are tossed out instead of occupying space.  Run "icont -v3"
  33. to see the list of objects being discarded.
  34.  
  35. This optimization breaks down in the case of string invocation.  If the
  36. only call to procedure foo is via something like
  37.     s := "foo"
  38.     s()
  39. this doesn't count as a reference; the *procedure* foo is never
  40. referenced in the program, and so is discarded.  You need to add
  41.     invocable "foo"
  42. to prevent this, or
  43.     invocable all
  44. if you don't know exactly what procedures to name.
  45.  
  46. Now, back to the original question.  Suppose that the only procedure that
  47. creates a record of type R is suppressed -- perhaps it was not called due
  48. to oversight or typographical error.  All the places that reference fields
  49. of record type R now produce the warning message, which is technically
  50. correct but not at all helpful towards identifying the real problem.
  51.  
  52. Accordingly, we are removing the link-time warning message from Icon
  53. version 9.1.  In the mean time, just ignore it and concentrate on any
  54. other problems.  If the reference causes problems during execution, an
  55. error will be genenrated at that time.
  56.  
  57.  
  58.     Gregg Townsend / Computer Science Dept / Univ of Arizona / Tucson, AZ 85721
  59.     +1 520 621 4325     gmt@CS.Arizona.EDU     110 57 16 W / 32 13 45 N / +758m
  60.